<template>
  <view id="app">
    <view class="app-container">
      <!-- 这里会渲染页面内容 -->
    </view>
  </view>
</template>

<script setup>
import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'
import api from '@/utils/api'
import storageUtil from '@/utils/storage'

// JWT无状态验证 - 不需要主动检查token
// token验证已整合到API请求拦截器中，当服务器返回401时自动处理刷新

// 自动微信登录（静默登录）
const autoWechatLogin = async () => {
  try {
    // 如果已经登录，不需要重复登录
    if (storageUtil.user.isLoggedIn()) {
      return
    }
    
    // 获取微信登录code
    const loginRes = await uni.login({
      provider: 'weixin'
    })
    if (loginRes.code) {
      // 静默登录，不显示loading
      const response = await api.wechat.login(loginRes.code)
      
      if (response.code === 0) {
        // 保存登录信息
        console.log('后端返回的微信信息:', response)
        const loginData = {
          token: response.data.access_token,
          openid: response.data.openid,
          sessionKey: response.data.session_key,
          tokenType: response.data.token_type,
          expiresIn: response.data.expires_in,
          refreshToken: response.data.refresh_token || '', // 如果后端有返回refresh_token
          userInfo: response.data.userInfo || {}
        }
        
        storageUtil.user.setLoginData(loginData)
        console.log('自动登录成功', loginData)
        
        // 自动登录成功后，触发获取用户信息的流程
        // 延迟一下确保页面已经加载完成
        setTimeout(() => {
          uni.$emit('autoLoginSuccess')
        }, 1000)
      }
    }
  } catch (error) {
    console.error('自动登录失败:', error)
    // 自动登录失败不影响应用正常使用
  }
}

// 初始化应用
const initApp = async () => {
  // 自动微信登录
  await autoWechatLogin()
  
  // 初始化全局配置
  console.log('应用初始化完成')
}

// 应用生命周期
onLaunch(async () => {
  console.log('App Launch')
  // 自动微信登录
  await autoWechatLogin()
})

onShow(() => {
  console.log('App Show')
  // JWT无状态验证，不需要主动检查登录状态
})

onHide(() => {
  console.log('App Hide')
})
</script>

<style>
/* 全局样式 */
page {
  margin: 0;
  padding: 0;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
  box-sizing: border-box;
}

view, text, button, input {
  box-sizing: border-box;
}

#app {
  width: 100%;
  min-height: 100vh;
  background: linear-gradient(135deg, #FFF8E1 0%, #FFECB3 100%);
}

.app-container {
  width: 100%;
  min-height: 100vh;
}

/* 通用按钮样式 */
.btn-primary {
  background: linear-gradient(135deg, #FFB800 0%, #FF8F00 100%);
  color: white;
  border: none;
  border-radius: 25px;
  padding: 12px 24px;
  font-size: 16px;
  font-weight: bold;
  box-shadow: 0 4px 12px rgba(255, 184, 0, 0.3);
  transition: all 0.3s ease;
}

.btn-primary:active {
  transform: translateY(2px);
  box-shadow: 0 2px 8px rgba(255, 184, 0, 0.3);
}

.btn-secondary {
  background: white;
  color: #FFB800;
  border: 2px solid #FFB800;
  border-radius: 25px;
  padding: 10px 22px;
  font-size: 16px;
  font-weight: bold;
  transition: all 0.3s ease;
}

.btn-secondary:active {
  background: #FFB800;
  color: white;
}

/* 卡片样式 */
.card {
  background: white;
  border-radius: 16px;
  padding: 20px;
  margin: 16px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
  border: 1px solid rgba(255, 184, 0, 0.2);
}

/* 输入框样式 */
.input-field {
  width: 100%;
  padding: 12px 16px;
  border: 2px solid #FFE082;
  border-radius: 12px;
  font-size: 16px;
  background: white;
  transition: border-color 0.3s ease;
}

.input-field:focus {
  border-color: #FFB800;
  outline: none;
}

/* 文本样式 */
.text-primary {
  color: #FFB800;
}

.text-secondary {
  color: #666;
}

.text-center {
  text-align: center;
}

.text-bold {
  font-weight: bold;
}

/* 布局样式 */
.flex {
  display: flex;
}

.flex-center {
  display: flex;
  justify-content: center;
  align-items: center;
}

.flex-column {
  flex-direction: column;
}

.flex-between {
  justify-content: space-between;
}

.mt-16 {
  margin-top: 16px;
}

.mb-16 {
  margin-bottom: 16px;
}

.p-16 {
  padding: 16px;
}
</style>